package pe.com.cotelasa.scp.dominio.service;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;

import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.entidad.CompraFacturacion;
import pe.com.cotelasa.scp.entidad.DetalleCompraFacturacion;

public interface IServicioCompraFacturacion {

    public CompraFacturacion obtenerFacturaPorNumero(String numeroFactura) throws ServiceException;

    public Collection<CompraFacturacion> listarFacturasActivas() throws ServiceException;

    public void agregarDetalleCompraFacturacion(Integer id, DetalleCompraFacturacion detalle) throws ServiceException;

    public Collection<CompraFacturacion> listarCompraFacturacionPorFiltro(CompraFacturacion factura) throws ServiceException;

    public ResultadoServicio actualizarCompraFacturacion(CompraFacturacion factura) throws ServiceException;

    public ResultadoServicio guardarCompraFacturacion(CompraFacturacion factura) throws ServiceException;

    public CompraFacturacion conseguirCompraFacturacionPorId(Integer idFactura) throws ServiceException;

    public Collection<CompraFacturacion> buscarCompraFacturacionPorFiltro(CompraFacturacion factura, Date fechaInicio, Date fechaFinal) throws ServiceException;

    public Collection<CompraFacturacion> listarFacturasNoPagadas(String solicitante) throws ServiceException;

    public CompraFacturacion conseguirMasAntiguo(int idEmpresa) throws ServiceException;

    public CompraFacturacion conseguirMasNuevo(int idEmpresa) throws ServiceException;

    public BigDecimal buscarMontoPorMes(DetalleCompraFacturacion detalle, Date fecha, int idEmpresa) throws ServiceException;
    
    public Collection<CompraFacturacion> obtenerFacturasCompraParaLetras(CompraFacturacion compraFacturacion) throws ServiceException;
    
    public Collection<CompraFacturacion> obtenerCompraFacturacion(CompraFacturacion compraFacturacion) throws ServiceException;
    
    public void cancelarFactura(CompraFacturacion compraFacturacion) throws ServiceException;
}
